ExpandableListView中childview的数据出现了2次
- 问题:给child的集合个数是3个,但是打开折叠,出现了6个数据,debug发现getChildView执行了groupCount×childCount×2次,这显然是不合理的
- 原因:
虽然ExpandableListView提供了点击、展开、折叠的监听但ExpandableListView自己就实现了点击group展开,再次点击折叠,不需要手动去写这个操作。1
2
3listview.setOnGroupClickListener()
listview.setOnGroupExpandListener()
listview.setOnGroupCollapseListener()
除非需要同一时间只允许打开一个group,那么可以1
2
3
4
5
6
7
8
9
10
11//展开监听,展开的时候遍历所有组,将其他的折叠起来
listview.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
public void onGroupExpand(int groupPosition) {
for (int i = 0; i < ringAdapter.getGroupCount(); i++) {
if (groupPosition != i) {
listview.collapseGroup(i);
}
}
}
});
前方高能
如果手欠再次去实现了一遍展开和折叠的操作的话,比如这样,
1 | listview.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { |
那么就会被认为展开了2次操作,会多调一遍getChildView(),造成数据重复!!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 七夜的小屋!